{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "import pandas as pd\n",
    "import xarray as xr\n",
    "import matplotlib.pyplot as plt\n",
    "import xarray as xr\n",
    "import os\n",
    "import numpy as np\n",
    "import sys\n",
    "import tensorflow as tf\n",
    "import tensorflow.keras.backend as K\n",
    "import cartopy.crs as ccrs\n",
    "\n",
    "# these are my working paths\n",
    "sys.path.append(r'/nesi/project/niwa00018/rampaln/High-res-interpretable-dl/src')\n",
    "# change to the directory of the \"src file\" in your directory\n",
    "os.chdir(r'/nesi/project/niwa00018/rampaln/High-res-interpretable-dl')\n",
    "# change directory to your repository of interest\n",
    "import tensorflow as tf\n",
    "from dask.diagnostics import ProgressBar\n",
    "import cmocean\n",
    "from models import train_model, complex_conv, simple_conv, predict, simple_dense, linear_complex_model\n",
    "from losses import gamma_loss_1d, gamma_mse_metric\n",
    "from prepare_data import format_features, prepare_training_dataset, create_test_train_split\n",
    "\n",
    "\n",
    "tf.random.set_seed(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# here is where we select where the input and output data is the features we want to use\n",
    "config = dict(y = \"/nesi/project/niwa00018/rampaln/High-res-interpretable-dl/training_data/topography_subset_full.nc\",\n",
    "              X = \"/nesi/project/niwa00018/rampaln/High-res-interpretable-dl/training_data/ERA5_training_dataset_6_3_23_bilinear_half_degree.nc\",\n",
    "             train_start = \"1982-01-01\",\n",
    "             train_end = \"2005-01-01\",\n",
    "             val_start = \"2005-02-01\",\n",
    "             val_end = \"2010-01-01\",\n",
    "             test_start = \"2010-01-01\",\n",
    "             test_end = \"2018-12-01\",\n",
    "             downscale_variables = ['w_850', 'u_850',\n",
    "             'v_850', 'q_850', 't_850'])\n",
    "# you can modify any of the above features\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Loading the Training Data\n",
    "Here we load the training data from a configuration file and prepare it for training DL models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train, x_val, x_test, y_train, y_val, y_test = create_test_train_split(config)\n",
    "# load the training data\n",
    "x_train, x_test, x_val, y_train, y_test, y_val = prepare_training_dataset(x_train, x_val, x_test, y_train, y_val, y_test)      \n",
    "# modify the training data so that it is compatible with tensorflow and training\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model training hyperparameters\n",
    "Here are the model training hyperparameters used in this study"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "initial_learning_rate =1e-4\n",
    "dropout = 0.6\n",
    "input_shape = x_train.shape[1:]\n",
    "output_shape = y_train.z.size\n",
    "hidden_layer_dense = 256\n",
    "batch_size =64\n",
    "kernel_size = 5\n",
    "layer_filters =[16, 32, 64]\n",
    "epochs =500\n",
    "optimizer = tf.keras.optimizers.Adam(lr =initial_learning_rate)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Defining Three Model Architectures"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# simple lienar model with mse loss\n",
    "linear_model = simple_dense(dense_layers=[hidden_layer_dense, output_shape], dense_activation='selu', input_shape=input_shape, dropout=dropout)\n",
    "# linear model with Gamma loss\n",
    "complex_linear = linear_complex_model(dense_layers=[hidden_layer_dense], dense_activation='selu', input_shape=input_shape, dropout=dropout,\n",
    "                         output_shape=output_shape)\n",
    "# cnn model with gamma loss\n",
    "cnn_gamma = complex_conv(layer_filters=layer_filters, bn=True, padding='valid', kernel_size=(kernel_size,kernel_size),\n",
    "                pooling=True, dense_layers=[hidden_layer_dense], dense_activation='selu', input_shape=input_shape,\n",
    "                dropout=dropout, activation='selu', output_shape = output_shape)\n",
    "# cnn model with mse loss\n",
    "simple_cnn = simple_conv(layer_filters=layer_filters, bn=True, padding='valid', kernel_size=(kernel_size,kernel_size),\n",
    "                pooling=True, dense_layers=[hidden_layer_dense, output_shape], dense_activation='selu', input_shape=input_shape,\n",
    "                dropout=dropout, activation='selu')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Training with Gamma Loss Functions\n",
    "Here are the implementations with Gamma loss functions\n",
    "Note the Linear dense model (e.g. the models than are not CNNs) can be very unstable to train, so hyper parameter tuning is neccessary. \n",
    "\n",
    "Please train for more epochs (25 is only shown)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model_9\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_10 (InputLayer)           [(None, 67, 76, 5)]  0                                            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_3 (Conv2D)               (None, 63, 72, 16)   2016        input_10[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_3 (AveragePoo (None, 31, 36, 16)   0           conv2d_3[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_3 (BatchNor (None, 31, 36, 16)   64          average_pooling2d_3[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_4 (Conv2D)               (None, 27, 32, 32)   12832       batch_normalization_3[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_4 (AveragePoo (None, 13, 16, 32)   0           conv2d_4[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_4 (BatchNor (None, 13, 16, 32)   128         average_pooling2d_4[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_5 (Conv2D)               (None, 9, 12, 64)    51264       batch_normalization_4[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "average_pooling2d_5 (AveragePoo (None, 4, 6, 64)     0           conv2d_5[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_5 (BatchNor (None, 4, 6, 64)     256         average_pooling2d_5[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "flatten_9 (Flatten)             (None, 1536)         0           batch_normalization_5[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "dropout_9 (Dropout)             (None, 1536)         0           flatten_9[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "dense_28 (Dense)                (None, 256)          393472      dropout_9[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "dense_29 (Dense)                (None, 3220)         827540      dense_28[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "dense_30 (Dense)                (None, 3220)         827540      dense_28[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "dense_31 (Dense)                (None, 3220)         827540      dense_28[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "reshape_15 (Reshape)            (None, 1, 3220)      0           dense_29[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "reshape_16 (Reshape)            (None, 1, 3220)      0           dense_30[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "reshape_17 (Reshape)            (None, 1, 3220)      0           dense_31[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_5 (Concatenate)     (None, 3, 3220)      0           reshape_15[0][0]                 \n",
      "                                                                 reshape_16[0][0]                 \n",
      "                                                                 reshape_17[0][0]                 \n",
      "==================================================================================================\n",
      "Total params: 2,942,652\n",
      "Trainable params: 2,942,428\n",
      "Non-trainable params: 224\n",
      "__________________________________________________________________________________________________\n",
      "WARNING:tensorflow:Keras is training/fitting/evaluating on array-like data. Keras may not be optimized for this format, so if your input data format is supported by TensorFlow I/O (https://github.com/tensorflow/io) we recommend using that to load a Dataset instead.\n",
      "Epoch 1/25\n",
      "132/132 [==============================] - 7s 34ms/step - loss: 1.8555 - gamma_mse_metric: 56.7042 - val_loss: 1.7672 - val_gamma_mse_metric: 41.0569\n",
      "Epoch 2/25\n",
      "132/132 [==============================] - 3s 21ms/step - loss: 1.8539 - gamma_mse_metric: 57.7123 - val_loss: 1.7653 - val_gamma_mse_metric: 41.4193\n",
      "Epoch 3/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 1.8508 - gamma_mse_metric: 53.1549 - val_loss: 1.7624 - val_gamma_mse_metric: 41.1068\n",
      "Epoch 4/25\n",
      "132/132 [==============================] - 3s 21ms/step - loss: 1.8504 - gamma_mse_metric: 53.2659 - val_loss: 1.7600 - val_gamma_mse_metric: 40.2545\n",
      "Epoch 5/25\n",
      "132/132 [==============================] - 3s 21ms/step - loss: 1.8478 - gamma_mse_metric: 55.5244 - val_loss: 1.7580 - val_gamma_mse_metric: 41.5904\n",
      "Epoch 6/25\n",
      "132/132 [==============================] - 3s 22ms/step - loss: 1.8451 - gamma_mse_metric: 55.6302 - val_loss: 1.7580 - val_gamma_mse_metric: 42.7042\n",
      "Epoch 7/25\n",
      "132/132 [==============================] - 3s 20ms/step - loss: 1.8425 - gamma_mse_metric: 54.4724 - val_loss: 1.7547 - val_gamma_mse_metric: 40.4408\n",
      "Epoch 8/25\n",
      "132/132 [==============================] - 3s 23ms/step - loss: 1.8421 - gamma_mse_metric: 55.8916 - val_loss: 1.7539 - val_gamma_mse_metric: 42.0464\n",
      "Epoch 9/25\n",
      "132/132 [==============================] - 3s 21ms/step - loss: 1.8403 - gamma_mse_metric: 52.3537 - val_loss: 1.7523 - val_gamma_mse_metric: 42.2144\n",
      "Epoch 10/25\n",
      "132/132 [==============================] - 3s 22ms/step - loss: 1.8363 - gamma_mse_metric: 55.1247 - val_loss: 1.7496 - val_gamma_mse_metric: 41.0017\n",
      "Epoch 11/25\n",
      "132/132 [==============================] - 3s 23ms/step - loss: 1.8366 - gamma_mse_metric: 52.5409 - val_loss: 1.7474 - val_gamma_mse_metric: 40.0807\n",
      "Epoch 12/25\n",
      "132/132 [==============================] - 3s 22ms/step - loss: 1.8351 - gamma_mse_metric: 58.7854 - val_loss: 1.7459 - val_gamma_mse_metric: 39.3024\n",
      "Epoch 13/25\n",
      "132/132 [==============================] - 3s 21ms/step - loss: 1.8327 - gamma_mse_metric: 56.0602 - val_loss: 1.7445 - val_gamma_mse_metric: 39.7894\n",
      "Epoch 14/25\n",
      "132/132 [==============================] - 3s 23ms/step - loss: 1.8311 - gamma_mse_metric: 53.2907 - val_loss: 1.7423 - val_gamma_mse_metric: 39.5974\n",
      "Epoch 15/25\n",
      "132/132 [==============================] - 3s 23ms/step - loss: 1.8308 - gamma_mse_metric: 53.8220 - val_loss: 1.7415 - val_gamma_mse_metric: 39.7755\n",
      "Epoch 16/25\n",
      "132/132 [==============================] - 3s 22ms/step - loss: 1.8274 - gamma_mse_metric: 50.7181 - val_loss: 1.7425 - val_gamma_mse_metric: 41.2351\n",
      "Epoch 17/25\n",
      "132/132 [==============================] - 3s 21ms/step - loss: 1.8261 - gamma_mse_metric: 52.3036 - val_loss: 1.7402 - val_gamma_mse_metric: 39.8019\n",
      "Epoch 18/25\n",
      "132/132 [==============================] - 3s 24ms/step - loss: 1.8256 - gamma_mse_metric: 56.2639 - val_loss: 1.7376 - val_gamma_mse_metric: 39.6397\n",
      "Epoch 19/25\n",
      "132/132 [==============================] - 3s 25ms/step - loss: 1.8230 - gamma_mse_metric: 51.9430 - val_loss: 1.7371 - val_gamma_mse_metric: 39.3698\n",
      "Epoch 20/25\n",
      "132/132 [==============================] - 4s 28ms/step - loss: 1.8227 - gamma_mse_metric: 51.8400 - val_loss: 1.7339 - val_gamma_mse_metric: 39.0431\n",
      "Epoch 21/25\n",
      "132/132 [==============================] - 3s 24ms/step - loss: 1.8196 - gamma_mse_metric: 53.5326 - val_loss: 1.7336 - val_gamma_mse_metric: 38.8611\n",
      "Epoch 22/25\n",
      "132/132 [==============================] - 4s 27ms/step - loss: 1.8198 - gamma_mse_metric: 55.7035 - val_loss: 1.7341 - val_gamma_mse_metric: 39.7445\n",
      "Epoch 23/25\n",
      "132/132 [==============================] - 3s 22ms/step - loss: 1.8181 - gamma_mse_metric: 52.2315 - val_loss: 1.7325 - val_gamma_mse_metric: 40.1696\n",
      "Epoch 24/25\n",
      "132/132 [==============================] - 3s 22ms/step - loss: 1.8179 - gamma_mse_metric: 51.7814 - val_loss: 1.7307 - val_gamma_mse_metric: 39.4675\n",
      "Epoch 25/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 1.8160 - gamma_mse_metric: 51.8814 - val_loss: 1.7303 - val_gamma_mse_metric: 38.7477\n"
     ]
    }
   ],
   "source": [
    "# to train a linear dnese model with a gamma loss function use the following implementation \n",
    "history, model = train_model(\n",
    "complex_linear, [x_train, y_train], x_val = x_val.values, y_val = y_val.values,\n",
    "                             optimizer = optimizer, model_weights_name = 'model_with_new_training_period.h5',\n",
    "                            metrics =gamma_mse_metric)\n",
    "# n\n",
    "history, cnn_gamma = train_model(\n",
    "cnn_gamma, [x_train, y_train], x_val = x_val.values, y_val = y_val.values,\n",
    "                             loss = gamma_loss_1d, epochs =25, batch_size=64,\n",
    "                             optimizer = optimizer, model_weights_name = 'model_with_new_training_period.h5',\n",
    "                            metrics =gamma_mse_metric)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Training with MSE Loss functions\n",
    "Here are the implementations with MSE loss funcitons"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model_7\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_8 (InputLayer)         [(None, 67, 76, 5)]       0         \n",
      "_________________________________________________________________\n",
      "flatten_7 (Flatten)          (None, 25460)             0         \n",
      "_________________________________________________________________\n",
      "dropout_7 (Dropout)          (None, 25460)             0         \n",
      "_________________________________________________________________\n",
      "dense_22 (Dense)             (None, 256)               6518016   \n",
      "_________________________________________________________________\n",
      "dense_23 (Dense)             (None, 3220)              827540    \n",
      "=================================================================\n",
      "Total params: 7,345,556\n",
      "Trainable params: 7,345,556\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "WARNING:tensorflow:Keras is training/fitting/evaluating on array-like data. Keras may not be optimized for this format, so if your input data format is supported by TensorFlow I/O (https://github.com/tensorflow/io) we recommend using that to load a Dataset instead.\n",
      "Epoch 1/25\n",
      "132/132 [==============================] - 5s 31ms/step - loss: 52.3963 - mse: 52.3963 - val_loss: 48.6594 - val_mse: 48.6594\n",
      "Epoch 2/25\n",
      "132/132 [==============================] - 2s 17ms/step - loss: 52.1727 - mse: 52.1727 - val_loss: 48.3455 - val_mse: 48.3455\n",
      "Epoch 3/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 51.9926 - mse: 51.9926 - val_loss: 48.2254 - val_mse: 48.2254\n",
      "Epoch 4/25\n",
      "132/132 [==============================] - 2s 16ms/step - loss: 51.7505 - mse: 51.7505 - val_loss: 47.9463 - val_mse: 47.9463\n",
      "Epoch 5/25\n",
      "132/132 [==============================] - 3s 20ms/step - loss: 51.2658 - mse: 51.2658 - val_loss: 47.7853 - val_mse: 47.7853\n",
      "Epoch 6/25\n",
      "132/132 [==============================] - 3s 19ms/step - loss: 51.0328 - mse: 51.0328 - val_loss: 47.5491 - val_mse: 47.5491\n",
      "Epoch 7/25\n",
      "132/132 [==============================] - 2s 14ms/step - loss: 50.8314 - mse: 50.8314 - val_loss: 47.3174 - val_mse: 47.3174\n",
      "Epoch 8/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 50.5459 - mse: 50.5459 - val_loss: 47.0775 - val_mse: 47.0775\n",
      "Epoch 9/25\n",
      "132/132 [==============================] - 2s 16ms/step - loss: 50.2423 - mse: 50.2423 - val_loss: 46.8917 - val_mse: 46.8917\n",
      "Epoch 10/25\n",
      "132/132 [==============================] - 2s 13ms/step - loss: 50.1759 - mse: 50.1759 - val_loss: 46.7061 - val_mse: 46.7061\n",
      "Epoch 11/25\n",
      "132/132 [==============================] - 2s 17ms/step - loss: 49.8945 - mse: 49.8945 - val_loss: 46.5302 - val_mse: 46.5302\n",
      "Epoch 12/25\n",
      "132/132 [==============================] - 2s 17ms/step - loss: 49.5783 - mse: 49.5783 - val_loss: 46.3181 - val_mse: 46.3181\n",
      "Epoch 13/25\n",
      "132/132 [==============================] - 2s 16ms/step - loss: 49.4228 - mse: 49.4228 - val_loss: 46.1885 - val_mse: 46.1885\n",
      "Epoch 14/25\n",
      "132/132 [==============================] - 2s 14ms/step - loss: 49.0356 - mse: 49.0356 - val_loss: 46.0648 - val_mse: 46.0648\n",
      "Epoch 15/25\n",
      "132/132 [==============================] - 2s 14ms/step - loss: 49.0123 - mse: 49.0123 - val_loss: 45.8861 - val_mse: 45.8861\n",
      "Epoch 16/25\n",
      "132/132 [==============================] - 2s 13ms/step - loss: 48.7264 - mse: 48.7264 - val_loss: 45.7160 - val_mse: 45.7160\n",
      "Epoch 17/25\n",
      "132/132 [==============================] - 2s 16ms/step - loss: 48.6677 - mse: 48.6677 - val_loss: 45.5650 - val_mse: 45.5650\n",
      "Epoch 18/25\n",
      "132/132 [==============================] - 2s 15ms/step - loss: 48.4158 - mse: 48.4158 - val_loss: 45.4324 - val_mse: 45.4324\n",
      "Epoch 19/25\n",
      "132/132 [==============================] - 2s 17ms/step - loss: 48.2853 - mse: 48.2853 - val_loss: 45.2806 - val_mse: 45.2806\n",
      "Epoch 20/25\n",
      "132/132 [==============================] - 2s 15ms/step - loss: 48.0222 - mse: 48.0222 - val_loss: 45.1519 - val_mse: 45.1519\n",
      "Epoch 21/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 47.7992 - mse: 47.7992 - val_loss: 45.0612 - val_mse: 45.0612\n",
      "Epoch 22/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 47.5812 - mse: 47.5812 - val_loss: 44.8889 - val_mse: 44.8889\n",
      "Epoch 23/25\n",
      "132/132 [==============================] - 2s 16ms/step - loss: 47.6070 - mse: 47.6070 - val_loss: 44.7131 - val_mse: 44.7131\n",
      "Epoch 24/25\n",
      "132/132 [==============================] - 2s 14ms/step - loss: 47.4327 - mse: 47.4327 - val_loss: 44.5988 - val_mse: 44.5988\n",
      "Epoch 25/25\n",
      "132/132 [==============================] - 2s 12ms/step - loss: 47.1763 - mse: 47.1763 - val_loss: 44.4844 - val_mse: 44.4844\n",
      "Model: \"model_10\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_11 (InputLayer)        [(None, 67, 76, 5)]       0         \n",
      "_________________________________________________________________\n",
      "conv2d_6 (Conv2D)            (None, 63, 72, 16)        2016      \n",
      "_________________________________________________________________\n",
      "average_pooling2d_6 (Average (None, 31, 36, 16)        0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_6 (Batch (None, 31, 36, 16)        64        \n",
      "_________________________________________________________________\n",
      "conv2d_7 (Conv2D)            (None, 27, 32, 32)        12832     \n",
      "_________________________________________________________________\n",
      "average_pooling2d_7 (Average (None, 13, 16, 32)        0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_7 (Batch (None, 13, 16, 32)        128       \n",
      "_________________________________________________________________\n",
      "conv2d_8 (Conv2D)            (None, 9, 12, 64)         51264     \n",
      "_________________________________________________________________\n",
      "average_pooling2d_8 (Average (None, 4, 6, 64)          0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_8 (Batch (None, 4, 6, 64)          256       \n",
      "_________________________________________________________________\n",
      "flatten_10 (Flatten)         (None, 1536)              0         \n",
      "_________________________________________________________________\n",
      "dropout_10 (Dropout)         (None, 1536)              0         \n",
      "_________________________________________________________________\n",
      "dense_32 (Dense)             (None, 256)               393472    \n",
      "_________________________________________________________________\n",
      "dense_33 (Dense)             (None, 3220)              827540    \n",
      "=================================================================\n",
      "Total params: 1,287,572\n",
      "Trainable params: 1,287,348\n",
      "Non-trainable params: 224\n",
      "_________________________________________________________________\n",
      "WARNING:tensorflow:Keras is training/fitting/evaluating on array-like data. Keras may not be optimized for this format, so if your input data format is supported by TensorFlow I/O (https://github.com/tensorflow/io) we recommend using that to load a Dataset instead.\n",
      "Epoch 1/25\n",
      "132/132 [==============================] - 5s 27ms/step - loss: 47.0583 - mse: 47.0583 - val_loss: 42.2727 - val_mse: 42.2727\n",
      "Epoch 2/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 46.8463 - mse: 46.8463 - val_loss: 42.1159 - val_mse: 42.1159\n",
      "Epoch 3/25\n",
      "132/132 [==============================] - 2s 17ms/step - loss: 46.5604 - mse: 46.5604 - val_loss: 42.0384 - val_mse: 42.0384\n",
      "Epoch 4/25\n",
      "132/132 [==============================] - 2s 19ms/step - loss: 46.6739 - mse: 46.6739 - val_loss: 41.8548 - val_mse: 41.8548\n",
      "Epoch 5/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 46.4759 - mse: 46.4759 - val_loss: 41.9044 - val_mse: 41.9044\n",
      "Epoch 6/25\n",
      "132/132 [==============================] - 3s 25ms/step - loss: 46.3958 - mse: 46.3958 - val_loss: 41.8565 - val_mse: 41.8565\n",
      "Epoch 7/25\n",
      "132/132 [==============================] - 3s 24ms/step - loss: 46.2361 - mse: 46.2361 - val_loss: 41.5757 - val_mse: 41.5757\n",
      "Epoch 8/25\n",
      "132/132 [==============================] - 2s 17ms/step - loss: 46.1722 - mse: 46.1722 - val_loss: 41.4472 - val_mse: 41.4472\n",
      "Epoch 9/25\n",
      "132/132 [==============================] - 4s 30ms/step - loss: 45.8742 - mse: 45.8742 - val_loss: 41.4452 - val_mse: 41.4452\n",
      "Epoch 10/25\n",
      "132/132 [==============================] - 2s 16ms/step - loss: 45.7003 - mse: 45.7003 - val_loss: 41.3432 - val_mse: 41.3432\n",
      "Epoch 11/25\n",
      "132/132 [==============================] - 2s 17ms/step - loss: 45.5980 - mse: 45.5980 - val_loss: 41.0525 - val_mse: 41.0525\n",
      "Epoch 12/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 45.4505 - mse: 45.4505 - val_loss: 40.9400 - val_mse: 40.9400\n",
      "Epoch 13/25\n",
      "132/132 [==============================] - 3s 22ms/step - loss: 45.3316 - mse: 45.3316 - val_loss: 40.9104 - val_mse: 40.9104\n",
      "Epoch 14/25\n",
      "132/132 [==============================] - 3s 19ms/step - loss: 45.2119 - mse: 45.2119 - val_loss: 40.7561 - val_mse: 40.7561\n",
      "Epoch 15/25\n",
      "132/132 [==============================] - 3s 21ms/step - loss: 45.2119 - mse: 45.2119 - val_loss: 40.6520 - val_mse: 40.6520\n",
      "Epoch 16/25\n",
      "132/132 [==============================] - 3s 23ms/step - loss: 44.9805 - mse: 44.9805 - val_loss: 40.7472 - val_mse: 40.7472\n",
      "Epoch 17/25\n",
      "132/132 [==============================] - 3s 20ms/step - loss: 44.8694 - mse: 44.8694 - val_loss: 40.5000 - val_mse: 40.5000\n",
      "Epoch 18/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 44.9704 - mse: 44.9704 - val_loss: 40.4150 - val_mse: 40.4150\n",
      "Epoch 19/25\n",
      "132/132 [==============================] - 2s 17ms/step - loss: 44.8248 - mse: 44.8248 - val_loss: 40.3378 - val_mse: 40.3378\n",
      "Epoch 20/25\n",
      "132/132 [==============================] - 3s 20ms/step - loss: 44.5473 - mse: 44.5473 - val_loss: 40.1630 - val_mse: 40.1630\n",
      "Epoch 21/25\n",
      "132/132 [==============================] - 3s 20ms/step - loss: 44.3170 - mse: 44.3170 - val_loss: 40.1320 - val_mse: 40.1320\n",
      "Epoch 22/25\n",
      "132/132 [==============================] - 3s 23ms/step - loss: 44.4619 - mse: 44.4619 - val_loss: 40.1198 - val_mse: 40.1198\n",
      "Epoch 23/25\n",
      "132/132 [==============================] - 2s 18ms/step - loss: 44.2588 - mse: 44.2588 - val_loss: 39.9399 - val_mse: 39.9399\n",
      "Epoch 24/25\n",
      "132/132 [==============================] - 2s 16ms/step - loss: 44.1747 - mse: 44.1747 - val_loss: 39.8270 - val_mse: 39.8270\n",
      "Epoch 25/25\n",
      "132/132 [==============================] - 2s 16ms/step - loss: 44.1844 - mse: 44.1844 - val_loss: 39.8509 - val_mse: 39.8509\n"
     ]
    }
   ],
   "source": [
    "# to train a linear dnese model with a gamma loss function use the following implementation \n",
    "history, linear_model = train_model(\n",
    "linear_model , [x_train, y_train], x_val = x_val.values, y_val = y_val.values,\n",
    "                             loss = 'mse', epochs =25, batch_size=64,\n",
    "                             optimizer = optimizer, model_weights_name = 'model_with_new_training_period.h5',\n",
    "                            metrics ='mse')\n",
    "# t\n",
    "history, simple_cnn = train_model(\n",
    "simple_cnn, [x_train, y_train], x_val = x_val.values, y_val = y_val.values,\n",
    "                             loss = 'mse', epochs =25, batch_size=64,\n",
    "                             optimizer = optimizer, model_weights_name = 'model_with_new_training_period.h5',\n",
    "                            metrics ='mse')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Inference for MSE LOss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:Keras is training/fitting/evaluating on array-like data. Keras may not be optimized for this format, so if your input data format is supported by TensorFlow I/O (https://github.com/tensorflow/io) we recommend using that to load a Dataset instead.\n",
      "102/102 [==============================] - 1s 8ms/step\n"
     ]
    }
   ],
   "source": [
    "simple_cnn_prediciton = predict(simple_cnn, x_test, y_test, batch_size=32, key ='pr', pred_name =\"test\", loss ='mse' , thres =0.5)\n",
    "simple_cnn_prediciton = simple_cnn_prediciton.unstack()\n",
    "simple_cnn_prediciton = simple_cnn_prediciton.reindex(lon = sorted(simple_cnn_prediciton.lon.values))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:Keras is training/fitting/evaluating on array-like data. Keras may not be optimized for this format, so if your input data format is supported by TensorFlow I/O (https://github.com/tensorflow/io) we recommend using that to load a Dataset instead.\n",
      "102/102 [==============================] - 1s 4ms/step\n"
     ]
    }
   ],
   "source": [
    "simple_dense_prediciton = predict(linear_model, x_test, y_test, batch_size=32, key ='pr', pred_name =\"test\", loss ='mse' , thres =0.5)\n",
    "simple_dense_prediciton = simple_dense_prediciton.unstack()\n",
    "simple_dense_prediciton = simple_dense_prediciton.reindex(lon = sorted(simple_dense_prediciton.lon.values))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Inference for GAMMA_loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:Keras is training/fitting/evaluating on array-like data. Keras may not be optimized for this format, so if your input data format is supported by TensorFlow I/O (https://github.com/tensorflow/io) we recommend using that to load a Dataset instead.\n",
      "102/102 [==============================] - 1s 7ms/step\n"
     ]
    }
   ],
   "source": [
    "gamma_prediciton = predict(cnn_gamma, x_test, y_test, batch_size=32, key ='pr', pred_name =\"test\", loss ='gamma' , thres =0.5)\n",
    "gamma_prediciton= gamma_prediciton.unstack()\n",
    "gamma_prediciton = gamma_prediciton.reindex(lon = sorted(gamma_prediciton.lon.values))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:Keras is training/fitting/evaluating on array-like data. Keras may not be optimized for this format, so if your input data format is supported by TensorFlow I/O (https://github.com/tensorflow/io) we recommend using that to load a Dataset instead.\n",
      "102/102 [==============================] - 1s 6ms/step\n"
     ]
    }
   ],
   "source": [
    "complex_dense_prediciton = predict(complex_linear, x_test, y_test, batch_size=32, key ='pr', pred_name =\"test\", loss ='gamma' , thres =0.5)\n",
    "complex_dense_prediciton = complex_dense_prediciton.unstack()\n",
    "complex_dense_prediciton = complex_dense_prediciton.reindex(lon = sorted(complex_dense_prediciton.lon.values))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Creating one Dataset for all the models to evaluate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "concat_predictions = xr.concat([simple_cnn_prediciton, simple_dense_prediciton, \n",
    "                                gamma_prediciton, complex_dense_prediciton], dim =\"experiments\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "concat_predictions['experiments'] = (('experiments'),['Simple_cnn','simple_dense', 'cnn_gamma', 'linear_gamma'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "gt = y_test.unstack()\n",
    "gt = gt.reindex(lon = sorted(gt.lon.values))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Correlation Coefficient in Time Evalation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "corrs2 = xr.corr(gt, concat_predictions.test, dim =\"time\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
       "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
       "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
       "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
       "</symbol>\n",
       "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
       "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
       "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
       "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
       "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
       "</symbol>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
       "  --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
       "  --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
       "  --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --xr-background-color: var(--jp-layout-color0, white);\n",
       "  --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
       "  --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
       "}\n",
       "\n",
       "html[theme=dark],\n",
       "body.vscode-dark {\n",
       "  --xr-font-color0: rgba(255, 255, 255, 1);\n",
       "  --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
       "  --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
       "  --xr-border-color: #1F1F1F;\n",
       "  --xr-disabled-color: #515151;\n",
       "  --xr-background-color: #111111;\n",
       "  --xr-background-color-row-even: #111111;\n",
       "  --xr-background-color-row-odd: #313131;\n",
       "}\n",
       "\n",
       ".xr-wrap {\n",
       "  display: block;\n",
       "  min-width: 300px;\n",
       "  max-width: 700px;\n",
       "}\n",
       "\n",
       ".xr-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".xr-header {\n",
       "  padding-top: 6px;\n",
       "  padding-bottom: 6px;\n",
       "  margin-bottom: 4px;\n",
       "  border-bottom: solid 1px var(--xr-border-color);\n",
       "}\n",
       "\n",
       ".xr-header > div,\n",
       ".xr-header > ul {\n",
       "  display: inline;\n",
       "  margin-top: 0;\n",
       "  margin-bottom: 0;\n",
       "}\n",
       "\n",
       ".xr-obj-type,\n",
       ".xr-array-name {\n",
       "  margin-left: 2px;\n",
       "  margin-right: 10px;\n",
       "}\n",
       "\n",
       ".xr-obj-type {\n",
       "  color: var(--xr-font-color2);\n",
       "}\n",
       "\n",
       ".xr-sections {\n",
       "  padding-left: 0 !important;\n",
       "  display: grid;\n",
       "  grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
       "}\n",
       "\n",
       ".xr-section-item {\n",
       "  display: contents;\n",
       "}\n",
       "\n",
       ".xr-section-item input {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".xr-section-item input + label {\n",
       "  color: var(--xr-disabled-color);\n",
       "}\n",
       "\n",
       ".xr-section-item input:enabled + label {\n",
       "  cursor: pointer;\n",
       "  color: var(--xr-font-color2);\n",
       "}\n",
       "\n",
       ".xr-section-item input:enabled + label:hover {\n",
       "  color: var(--xr-font-color0);\n",
       "}\n",
       "\n",
       ".xr-section-summary {\n",
       "  grid-column: 1;\n",
       "  color: var(--xr-font-color2);\n",
       "  font-weight: 500;\n",
       "}\n",
       "\n",
       ".xr-section-summary > span {\n",
       "  display: inline-block;\n",
       "  padding-left: 0.5em;\n",
       "}\n",
       "\n",
       ".xr-section-summary-in:disabled + label {\n",
       "  color: var(--xr-font-color2);\n",
       "}\n",
       "\n",
       ".xr-section-summary-in + label:before {\n",
       "  display: inline-block;\n",
       "  content: '►';\n",
       "  font-size: 11px;\n",
       "  width: 15px;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       ".xr-section-summary-in:disabled + label:before {\n",
       "  color: var(--xr-disabled-color);\n",
       "}\n",
       "\n",
       ".xr-section-summary-in:checked + label:before {\n",
       "  content: '▼';\n",
       "}\n",
       "\n",
       ".xr-section-summary-in:checked + label > span {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".xr-section-summary,\n",
       ".xr-section-inline-details {\n",
       "  padding-top: 4px;\n",
       "  padding-bottom: 4px;\n",
       "}\n",
       "\n",
       ".xr-section-inline-details {\n",
       "  grid-column: 2 / -1;\n",
       "}\n",
       "\n",
       ".xr-section-details {\n",
       "  display: none;\n",
       "  grid-column: 1 / -1;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       "\n",
       ".xr-section-summary-in:checked ~ .xr-section-details {\n",
       "  display: contents;\n",
       "}\n",
       "\n",
       ".xr-array-wrap {\n",
       "  grid-column: 1 / -1;\n",
       "  display: grid;\n",
       "  grid-template-columns: 20px auto;\n",
       "}\n",
       "\n",
       ".xr-array-wrap > label {\n",
       "  grid-column: 1;\n",
       "  vertical-align: top;\n",
       "}\n",
       "\n",
       ".xr-preview {\n",
       "  color: var(--xr-font-color3);\n",
       "}\n",
       "\n",
       ".xr-array-preview,\n",
       ".xr-array-data {\n",
       "  padding: 0 5px !important;\n",
       "  grid-column: 2;\n",
       "}\n",
       "\n",
       ".xr-array-data,\n",
       ".xr-array-in:checked ~ .xr-array-preview {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".xr-array-in:checked ~ .xr-array-data,\n",
       ".xr-array-preview {\n",
       "  display: inline-block;\n",
       "}\n",
       "\n",
       ".xr-dim-list {\n",
       "  display: inline-block !important;\n",
       "  list-style: none;\n",
       "  padding: 0 !important;\n",
       "  margin: 0;\n",
       "}\n",
       "\n",
       ".xr-dim-list li {\n",
       "  display: inline-block;\n",
       "  padding: 0;\n",
       "  margin: 0;\n",
       "}\n",
       "\n",
       ".xr-dim-list:before {\n",
       "  content: '(';\n",
       "}\n",
       "\n",
       ".xr-dim-list:after {\n",
       "  content: ')';\n",
       "}\n",
       "\n",
       ".xr-dim-list li:not(:last-child):after {\n",
       "  content: ',';\n",
       "  padding-right: 5px;\n",
       "}\n",
       "\n",
       ".xr-has-index {\n",
       "  font-weight: bold;\n",
       "}\n",
       "\n",
       ".xr-var-list,\n",
       ".xr-var-item {\n",
       "  display: contents;\n",
       "}\n",
       "\n",
       ".xr-var-item > div,\n",
       ".xr-var-item label,\n",
       ".xr-var-item > .xr-var-name span {\n",
       "  background-color: var(--xr-background-color-row-even);\n",
       "  margin-bottom: 0;\n",
       "}\n",
       "\n",
       ".xr-var-item > .xr-var-name:hover span {\n",
       "  padding-right: 5px;\n",
       "}\n",
       "\n",
       ".xr-var-list > li:nth-child(odd) > div,\n",
       ".xr-var-list > li:nth-child(odd) > label,\n",
       ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
       "  background-color: var(--xr-background-color-row-odd);\n",
       "}\n",
       "\n",
       ".xr-var-name {\n",
       "  grid-column: 1;\n",
       "}\n",
       "\n",
       ".xr-var-dims {\n",
       "  grid-column: 2;\n",
       "}\n",
       "\n",
       ".xr-var-dtype {\n",
       "  grid-column: 3;\n",
       "  text-align: right;\n",
       "  color: var(--xr-font-color2);\n",
       "}\n",
       "\n",
       ".xr-var-preview {\n",
       "  grid-column: 4;\n",
       "}\n",
       "\n",
       ".xr-var-name,\n",
       ".xr-var-dims,\n",
       ".xr-var-dtype,\n",
       ".xr-preview,\n",
       ".xr-attrs dt {\n",
       "  white-space: nowrap;\n",
       "  overflow: hidden;\n",
       "  text-overflow: ellipsis;\n",
       "  padding-right: 10px;\n",
       "}\n",
       "\n",
       ".xr-var-name:hover,\n",
       ".xr-var-dims:hover,\n",
       ".xr-var-dtype:hover,\n",
       ".xr-attrs dt:hover {\n",
       "  overflow: visible;\n",
       "  width: auto;\n",
       "  z-index: 1;\n",
       "}\n",
       "\n",
       ".xr-var-attrs,\n",
       ".xr-var-data {\n",
       "  display: none;\n",
       "  background-color: var(--xr-background-color) !important;\n",
       "  padding-bottom: 5px !important;\n",
       "}\n",
       "\n",
       ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
       ".xr-var-data-in:checked ~ .xr-var-data {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".xr-var-data > table {\n",
       "  float: right;\n",
       "}\n",
       "\n",
       ".xr-var-name span,\n",
       ".xr-var-data,\n",
       ".xr-attrs {\n",
       "  padding-left: 25px !important;\n",
       "}\n",
       "\n",
       ".xr-attrs,\n",
       ".xr-var-attrs,\n",
       ".xr-var-data {\n",
       "  grid-column: 1 / -1;\n",
       "}\n",
       "\n",
       "dl.xr-attrs {\n",
       "  padding: 0;\n",
       "  margin: 0;\n",
       "  display: grid;\n",
       "  grid-template-columns: 125px auto;\n",
       "}\n",
       "\n",
       ".xr-attrs dt,\n",
       ".xr-attrs dd {\n",
       "  padding: 0;\n",
       "  margin: 0;\n",
       "  float: left;\n",
       "  padding-right: 10px;\n",
       "  width: auto;\n",
       "}\n",
       "\n",
       ".xr-attrs dt {\n",
       "  font-weight: normal;\n",
       "  grid-column: 1;\n",
       "}\n",
       "\n",
       ".xr-attrs dt:hover span {\n",
       "  display: inline-block;\n",
       "  background: var(--xr-background-color);\n",
       "  padding-right: 10px;\n",
       "}\n",
       "\n",
       ".xr-attrs dd {\n",
       "  grid-column: 2;\n",
       "  white-space: pre-wrap;\n",
       "  word-break: break-all;\n",
       "}\n",
       "\n",
       ".xr-icon-database,\n",
       ".xr-icon-file-text2 {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "</style><pre class='xr-text-repr-fallback'>&lt;xarray.DataArray (experiments: 4)&gt;\n",
       "array([0.74067855, 0.69292355, 0.76067377, 0.70866398])\n",
       "Coordinates:\n",
       "  * experiments  (experiments) &lt;U12 &#x27;Simple_cnn&#x27; ... &#x27;linear_gamma&#x27;</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'></div><ul class='xr-dim-list'><li><span class='xr-has-index'>experiments</span>: 4</li></ul></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-d00ee9a9-5c8c-4f82-ad28-7823046b5750' class='xr-array-in' type='checkbox' checked><label for='section-d00ee9a9-5c8c-4f82-ad28-7823046b5750' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>0.7407 0.6929 0.7607 0.7087</span></div><div class='xr-array-data'><pre>array([0.74067855, 0.69292355, 0.76067377, 0.70866398])</pre></div></div></li><li class='xr-section-item'><input id='section-040270e2-f1a3-4d53-84bc-25b779a31c62' class='xr-section-summary-in' type='checkbox'  checked><label for='section-040270e2-f1a3-4d53-84bc-25b779a31c62' class='xr-section-summary' >Coordinates: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>experiments</span></div><div class='xr-var-dims'>(experiments)</div><div class='xr-var-dtype'>&lt;U12</div><div class='xr-var-preview xr-preview'>&#x27;Simple_cnn&#x27; ... &#x27;linear_gamma&#x27;</div><input id='attrs-be4bb0a8-6472-4bce-9186-7824572b9c02' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-be4bb0a8-6472-4bce-9186-7824572b9c02' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2fc00cbb-c2d0-494d-b8e6-e6661945706d' class='xr-var-data-in' type='checkbox'><label for='data-2fc00cbb-c2d0-494d-b8e6-e6661945706d' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([&#x27;Simple_cnn&#x27;, &#x27;simple_dense&#x27;, &#x27;cnn_gamma&#x27;, &#x27;linear_gamma&#x27;], dtype=&#x27;&lt;U12&#x27;)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-8287112b-ceb4-456a-9638-78cc540bcb19' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-8287112b-ceb4-456a-9638-78cc540bcb19' class='xr-section-summary'  title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
      ],
      "text/plain": [
       "<xarray.DataArray (experiments: 4)>\n",
       "array([0.74067855, 0.69292355, 0.76067377, 0.70866398])\n",
       "Coordinates:\n",
       "  * experiments  (experiments) <U12 'Simple_cnn' ... 'linear_gamma'"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corrs2.mean([\"lat\",\"lon\"])\n",
    "# the average correlation coefficient"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Example Predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[None, None, None, None, None]"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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7iRKwd7VwDPh4ii2Tp3Q0t1zzawRsMGjcsCy2zOzI4CvCU6OvwJ+GyYd7e7/NrMGwEaPz44qUsPMrDGwEpgFrCC4QwJwo7s/HgaDJe5eWFN1FElkZulAMUGbjQFdwqSR7n5GeOckw9031VQdRZKZ2TK2XkzbD0iHYAT5sMtxtrvn11T9ZPcSmWAPSq/g/Q7YF/gSmOTuP9ZsrUQqZ2bnAl2BycBEd8+t4SqJVMrMegMnAzOBr3XnWWo7M+sIXAIsIegiP1MXf6U2M7P9gRsJelKMB6bEnzEVqYpIBXsiIiIiIiISiOzUCyIiIiIiInsyBXsiIiIiIiIRpGBPREREREQkghTsiYiIiIiIRJCCPRERERERkQhSsCciIiIiIhJBCvZEREREREQiSMGeiIiIiIhIBCnYExERERERiSAFeyIiIiIiIhGkYE9ERERERCSCFOyJiIiIiIhEkII9ERERERGRCFKwJyIiIiIiEkEK9kRERERERCJIwZ6IiIiIiEgEKdgTERERERGJIAV7IiIiIiIiEaRgT0REREREJIIU7ImIiIiIiESQgj0REREREZEIUrAnIiIiIiISQQr2REREREREIkjBnoiIiIiISAQp2BMREREREYkgBXsiIiIiIiIRpGBPREREREQkghTsiYiIiIiIRJCCPRERERERkQhSsCciIiIiIhJBCvZEREREREQiSMGeiIiIiIhIBCnYExERERERiSAFeyIiIiIiIhGkYE9ERERERCSCFOyJiIiIiIhEkII9ERERERGRCFKwJyIiIiIiEkEK9kRERERERCJIwZ6IiIiIiEgEKdgTERERERGJIAV7IiIiIiIiEaRgT0REREREJIIU7ImIiIiIiESQgj0REREREZEIUrAnIiIiIiISQQr2REREREREIkjBnoiIiIiISAQp2BMREREREYkgBXsiIiIiIiIRpGBPREREREQkghTsiYiIiIiIRJCCPRERERERkQhSsCciIiIiIhJBCvZEREREREQiSMGeiIiIiIhIBCnYExERERERiSAFeyIiIiIiIhGkYE9ERERERCSCFOyJiIiIiIhEkII9ERERERGRCFKwJyIiIiIiEkEK9kRERERERCJIwZ6IiIiIiEgEKdgTERERERGJIAV7IiIiIiIiEaRgT0REREREJIIU7ImIiIiIiESQgj0REREREZEIUrAnIiIi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\n",
      "text/plain": [
       "<Figure size 1080x360 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "date = \"2018-02-20\"\n",
    "fig, ax = plt.subplots(1,5, figsize = (15, 5), subplot_kw = dict(projection = ccrs.PlateCarree(central_longitude = 171.77)))\n",
    "ax = ax.ravel()\n",
    "cbar_dict = dict(shrink =0.8, label = 'Daily Rainfall (mm/day)')\n",
    "exps = ['Simple_cnn','simple_dense', 'cnn_gamma', 'linear_gamma']\n",
    "for i in range(4):\n",
    "    concat_predictions.sel(time =date, experiments =exps[i])['test'].sel(lat = slice(-39, -47),\n",
    "                                                                            lon = slice(167, 175)).plot(vmin =0, vmax =100,\n",
    "                                                                            cmap ='cmo.rain', ax = ax[i],\n",
    "                                                                            add_colorbar =False,transform = ccrs.PlateCarree())                                            \n",
    "\n",
    "cs = gt.sel(time =date).sel(lat = slice(-39, -47),\n",
    "                               lon = slice(167, 175)).plot(vmin =0, vmax =100, cmap ='cmo.rain', ax = ax[-1],\n",
    "                                                                            add_colorbar =False,transform = ccrs.PlateCarree())          \n",
    "[axes.set_title('') for axes in ax]\n",
    "[axes.coastlines('10m') for axes in ax]\n",
    "ax4 = fig.add_axes([0.1, 0.05, 0.8, 0.03])\n",
    "cbar = fig.colorbar(cs, cax=ax4, orientation ='horizontal')\n",
    "cbar.set_label('Rainfall (mm/day)', fontsize =15)\n",
    "ax[0].set_title('Linear CNN')\n",
    "ax[1].set_title('Linear Dense')\n",
    "ax[2].set_title('Gamma CNN')\n",
    "ax[3].set_title('Gamma Dense')\n",
    "ax[4].set_title('Ground Truth')\n",
    "# #[axes.add_feature(feature, zorder =5, color ='white') for axes in ax]\n",
    "# ax[-1].set_title('Observations')\n",
    "# ax[1].set_title('Non-linear Gamma Dense')\n",
    "# ax[2].set_title('Linear Dense')\n",
    "# ax[0].set_title('Non-linear Dense')\n",
    "# #ax[1].set_title('Non-linear Gamma Dense')\n",
    "# ax[3].set_title('CNN')\n",
    "# ax[-2].set_title('CNN Gamma')\n",
    "def remove_spines(ax):\n",
    "    ax.set_frame_on(False)\n",
    "    #fig.tight_layout()\n",
    "[remove_spines(axes) for axes in ax]\n",
    "# #fig.savefig('Comparison_of_simple_downsclaing_methods.pdf', dpi =300)\n",
    "#fig.savefig('Comparison_of_simple_downsclaing_methods.png', dpi =300)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "My_env",
   "language": "python",
   "name": "nellys_env"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
